// pages/register/register.js
// const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'

const validateUtil = require('../../utils/validateUtil')
const {
  registerUser
} = require('../../apis/api')
import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // avatarUrl: defaultAvatarUrl,
    username: "",
    email: "",
    verifyCode: "",
    password: "",
    confirmPassword: "",

    loading: false
  },

  /**
   * 选择头像时回调函数
   */
  // onChooseAvatar(e) {
  //   const { avatarUrl } = e.detail 
  //   this.setData({
  //     avatarUrl,
  //   })
  //   console.log(this.data.avatarUrl)
  // },

  /**
   * 监听username失去焦点事件(开放能力nickname无法双向绑定)
   * @param {*} e 
   */
  onUsernameInput(e) {
    this.setData({
      username: e.detail.value
    })
  },

  /**
   * 注册按钮回调事件
   */
  register() {
    this.setData({
      loading: true
    })
    
    // 数据校验
    let username = this.data.username
    if (!validateUtil.validateUsername(username)) {
      wx.showToast({
        title: '请输入正确的用户名',
        icon: 'none'
      })
      this.setData({
        loading: false
      })
      return
    }
    let email = this.data.email
    if (!validateUtil.validateEmail(email)) {
      wx.showToast({
        title: '请输入正确的邮箱',
        icon: 'none'
      })
      this.setData({
        loading: false
      })
      return
    }
    let verifyCode = this.data.verifyCode
    if (verifyCode === undefined || verifyCode === "") {
      wx.showToast({
        title: '请输入验证码',
        icon: 'none'
      })
      this.setData({
        loading: false
      })
      return
    }
    let password = this.data.password
    if (!validateUtil.validatePassword(password)) {
      wx.showToast({
        title: '密码至少包含一个字母，数字以及特殊字符',
        icon: 'none'
      })
      this.setData({
        loading: false
      })
      return
    }
    let confirmPassword = this.data.confirmPassword
    if (confirmPassword !== password) {
      wx.showToast({
        title: '两次密码输入不一致',
        icon: 'none'
      })
      this.setData({
        loading: false
      })
      return
    }

    // 注册
    registerUser(username, email, verifyCode, password, (res) => {
      if (res.data.code === 200) {
        // 注册成功，设置全局变量
        this.setUsername(res.data.data.username)
        this.setUserAvatar(res.data.data.userAvatar)
        this.setEmail(res.data.data.email)
        this.setToken(res.data.data.token)
        // 持久化登录态
        wx.setStorageSync('token', res.data.data.token)
        // 覆盖跳转
        wx.reLaunch({
          url: '/pages/index/index',
        })
      } else {
        // 注册失败
        wx.showToast({
          title: res.data.message,
          icon: 'none'
        })
      }
      this.setData({
        loading: false
      })
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.storeBindings = createStoreBindings(this, {
      store,
      // fields: ['username', 'userAvatar', 'email', 'token'],
      actions: ['setUsername', 'setUserAvatar', 'setEmail', 'setToken'],
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    this.storeBindings.destroyStoreBindings()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})